package com.smart.community.region.vo;

import com.fasterxml.jackson.annotation.JsonFormat;
import com.smart.community.commons.dto.FileInfoDTO;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;

import java.io.Serializable;
import java.math.BigDecimal;
import java.time.LocalDateTime;
import java.util.List;

/**
 * 店铺信息VO
 * 
 * @author Wu.Liang
 * @version 1.0.0
 * @since 2025-09-30
 */
@Data
@Schema(description = "店铺信息VO")
public class ShopVO implements Serializable {
    
    private static final long serialVersionUID = 1L;
    
    /**
     * 店铺ID
     */
    @Schema(description = "店铺ID", example = "1")
    private Long id;
    
    /**
     * 店铺名称
     */
    @Schema(description = "店铺名称", example = "张三便利店")
    private String shopName;
    
    /**
     * 店铺编码
     */
    @Schema(description = "店铺编码", example = "SHOP001")
    private String shopCode;
    
    /**
     * 店铺类型：1-餐饮，2-零售，3-服务，4-其他
     */
    @Schema(description = "店铺类型", example = "1")
    private Integer shopType;
    
    /**
     * 店铺类型名称
     */
    @Schema(description = "店铺类型名称", example = "餐饮")
    private String shopTypeName;
    
    /**
     * 所属社区ID
     */
    @Schema(description = "所属社区ID", example = "1")
    private Long communityId;
    
    /**
     * 所属社区名称
     */
    @Schema(description = "所属社区名称", example = "阳光小区")
    private String communityName;
    
    /**
     * 所属楼栋ID
     */
    @Schema(description = "所属楼栋ID", example = "1")
    private Long buildingId;
    
    /**
     * 所属楼栋名称
     */
    @Schema(description = "所属楼栋名称", example = "1号楼")
    private String buildingName;
    
    /**
     * 所属单元ID
     */
    @Schema(description = "所属单元ID", example = "1")
    private Long unitId;
    
    /**
     * 所属单元名称
     */
    @Schema(description = "所属单元名称", example = "1单元")
    private String unitName;
    
    /**
     * 房间号
     */
    @Schema(description = "房间号", example = "101")
    private String roomNumber;
    
    /**
     * 楼层号
     */
    @Schema(description = "楼层号", example = "1")
    private Integer floorNumber;
    
    /**
     * 店铺面积（平方米）
     */
    @Schema(description = "店铺面积（平方米）", example = "50.00")
    private BigDecimal area;
    
    /**
     * 租金价格
     */
    @Schema(description = "租金价格", example = "3000.00")
    private BigDecimal rentPrice;
    
    /**
     * 联系人
     */
    @Schema(description = "联系人", example = "张三")
    private String contactPerson;
    
    /**
     * 联系电话
     */
    @Schema(description = "联系电话", example = "13800138000")
    private String contactPhone;
    
    /**
     * 营业执照号
     */
    @Schema(description = "营业执照号", example = "91110000123456789X")
    private String businessLicense;
    
    /**
     * 店铺图片信息JSON字符串
     */
    @Schema(description = "店铺图片信息JSON字符串")
    private String imageInfo;
    
    /**
     * 状态：0-禁用，1-启用
     */
    @Schema(description = "状态", example = "1")
    private Integer status;
    
    /**
     * 状态名称
     */
    @Schema(description = "状态名称", example = "启用")
    private String statusName;
    
    /**
     * 备注
     */
    @Schema(description = "备注", example = "店铺备注信息")
    private String remark;
    
    /**
     * 创建时间
     */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    @Schema(description = "创建时间", example = "2025-09-30 10:00:00")
    private LocalDateTime createTime;
    
    /**
     * 更新时间
     */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    @Schema(description = "更新时间", example = "2025-09-30 10:00:00")
    private LocalDateTime updateTime;
    
    /**
     * 创建人
     */
    @Schema(description = "创建人", example = "1")
    private Long createBy;
    
    /**
     * 更新人
     */
    @Schema(description = "更新人", example = "1")
    private Long updateBy;
    
    /**
     * 店铺图片信息列表
     */
    @Schema(description = "店铺图片信息列表")
    private List<FileInfoDTO> imageInfoList;
    
    /**
     * 店铺图片URL列表
     */
    @Schema(description = "店铺图片URL列表")
    private List<String> imageUrls;
    
    /**
     * 第一张图片URL
     */
    @Schema(description = "第一张图片URL", example = "http://example.com/image1.jpg")
    private String firstImageUrl;
    
    /**
     * 图片数量
     */
    @Schema(description = "图片数量", example = "3")
    private Integer imageCount;
}
